iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
Python

30天Python資料分析挑戰:從基礎到視覺化系列 第 24

Day 24: 箱型圖 (Box Plot) 的應用與實作

  • 分享至 

  • xImage
  •  

Day 24: 箱型圖 (Box Plot) 的應用與實作

箱型圖(Box Plot),又稱盒狀圖,是用於顯示資料分佈情況的一種統計圖表。它能夠展示資料的中位數、四分位數、極端值和異常值(outliers),幫助我們直觀地了解資料的集中趨勢和變異情況。今天,我們將介紹箱型圖的應用情境,並使用 Matplotlib 和 Seaborn 進行實作。
大家一樣用昨天的檔案,先前面的程式內容全部都執行過一遍
https://ithelp.ithome.com.tw/upload/images/20241006/20140380QokK7Tseld.jpg

有任何問題,都歡迎私訊我的IG
點我私訊

1. 箱型圖的應用情境

箱型圖適合用來展示以下情境的資料:

  • 資料分佈:了解資料的集中趨勢、變異程度和分佈範圍,例如顯示某班級的考試成績分佈。
  • 異常值檢測:檢查資料中是否存在異常值,這對於清理資料非常有用。
  • 多組資料的比較:比較不同組別之間的資料分佈,例如不同地區的溫度分佈。

2. 使用 Matplotlib 繪製基本箱型圖

首先,我們使用 Matplotlib 繪製一個基本的箱型圖,來顯示花萼長度的分佈情況。

# 繪製花萼長度的箱型圖
plt.boxplot(iris_df['sepal length (cm)'])
plt.title('Box Plot of Sepal Length')
plt.ylabel('Sepal Length (cm)')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20241006/20140380ZcgqwS6fFT.jpg
這段程式碼會繪製一個基本的箱型圖,展示花萼長度的分佈情況。圖中的框表示資料的四分位範圍(IQR),水平線表示中位數,上下須線表示資料的範圍,圈點則表示異常值。

3. 使用 Seaborn 繪製分組箱型圖

接下來,我們使用 Seaborn 繪製一個分組箱型圖,顯示不同花卉種類的花瓣長度分佈情況。

# 繪製分組箱型圖
sns.boxplot(x='target', y='petal length (cm)', data=iris_df)
plt.title('Box Plot of Petal Length Distribution by Flower Species')
plt.xlabel('Flower Species')
plt.ylabel('Petal Length (cm)')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20241006/20140380vItIrMwdFX.jpg
這段程式碼使用 boxplot() 函數根據 target_0 分組,展示不同花卉種類的花瓣長度分佈情況。可以看到每個種類的中位數、四分位範圍和異常值。

4. 添加圖表元素來改進可視化效果

我們可以通過添加圖表元素(如顏色、標籤等)來改進箱型圖的可視化效果,使其更容易理解和分析。

4.1 調整顏色與樣式

# 繪製調整顏色的箱型圖
sns.boxplot(x='target', y='sepal width (cm)', data=iris_df, palette='Set3')
plt.title('Box Plot of Sepal Width Distribution by Flower Species (with Color Adjustments)')
plt.xlabel('Flower Species')
plt.ylabel('Sepal Width (cm)')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20241006/20140380VpBRGjjHGo.jpg
這段程式碼使用 palette 參數設定了箱型圖的顏色樣式,讓圖表看起來更加美觀。

4.2 添加數據點分佈

我們可以將數據點分佈疊加在箱型圖上,來更好地了解每個數據點的位置和分佈情況。

# 繪製疊加數據點的箱型圖
sns.boxplot(x='target', y='sepal length (cm)', data=iris_df, palette='Set2')
sns.stripplot(x='target', y='sepal length (cm)', data=iris_df, color='black', alpha=0.5)
plt.title('Box Plot of Sepal Length Distribution by Flower Species (with Data Points)')
plt.xlabel('Flower Species')
plt.ylabel('Sepal Length (cm)')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20241006/201403808f0wlK14g1.jpg
這段程式碼使用 stripplot() 函數在箱型圖上疊加了數據點,讓我們更直觀地看到每個數據點的分佈情況。

5. 繪製多變數的箱型圖

有時我們希望在一個圖表中展示多個變數的分佈情況,可以使用多變數箱型圖來比較不同變數之間的差異。

# 繪製多變數箱型圖
data_to_plot = [iris_df['sepal length (cm)'], iris_df['sepal width (cm)'], iris_df['petal length (cm)'], iris_df['petal width (cm)']]
plt.boxplot(data_to_plot, labels=['Sepal Length', 'Sepal Width', 'Petal Length', 'Petal Width'])
plt.title('Box Plot of Sepal and Petal Variables')
plt.ylabel('Length (cm)')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20241006/20140380WWZnEdUX8N.jpg
這段程式碼將花萼長度、花萼寬度、花瓣長度和花瓣寬度的資料繪製在同一個箱型圖中,以方便我們進行多變數的比較。

6. 水平箱型圖

當類別名稱較長或變數較多時,我們可以使用水平箱型圖來改進可讀性。

# 繪製水平箱型圖
sns.boxplot(x='sepal length (cm)', y='target', data=iris_df, orient='h')
plt.title('Horizontal Box Plot of Sepal Length Distribution by Flower Species')
plt.xlabel('Sepal Length (cm)')
plt.ylabel('Flower Species')
plt.show()

https://ithelp.ithome.com.tw/upload/images/20241006/20140380AksL9g3rg8.jpg
這段程式碼使用 orient='h' 將箱型圖水平顯示,更適合類別名稱較長的情境。

7. 小結

今天我們學習了如何使用 Matplotlib 和 Seaborn 繪製箱型圖,包括:

  1. 簡單的箱型圖,用來顯示資料的集中趨勢和異常值。
  2. 分組箱型圖,展示多組資料的分佈差異。
  3. 改進可視化效果,例如調整顏色和疊加數據點。
  4. 多變數箱型圖,用來比較不同變數的分佈情況。
  5. 水平箱型圖,適合類別名稱較長的情境。

箱型圖能夠幫助我們直觀地了解資料的分佈情況和檢測異常值,在資料分析中應用廣泛。接下來,我們將學習如何使用熱圖來展示資料的相關性和矩陣資料。


上一篇
Day 23: 餅圖 (Pie Chart) 的應用與實作
下一篇
Day 25: 熱圖 (Heatmap) 的應用與實作
系列文
30天Python資料分析挑戰:從基礎到視覺化30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言